package com.faya.green.dao.authority;

import com.faya.green.model.Organization;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Select;

import java.util.List;

/**
 * 用户 ：LX
 * 创建时间： 2018/7/26. 23:29
 * 地点：广州
 * 目的: 根机构|部门 dao层
 * 结果：
 */
public interface OrganizationDao {

    /**
     * 新增一个根机构
     * @param organization 机构
     */
    void addOrganization(Organization organization);

    /**
     * 更新一个机构
     * @param organization 机构
     */
    void updateOrganization(Organization organization);

    /**
     * 查询全部的根节点机构
     * @return
     */
    @Select("select * from Organization where isRoot = '1' and isDepOrOrg = '1' and status != '2' and id != '00000000000000000000000000000000000'")
    List<Organization> getAllRootNode();

    /**
     * 根据id获取一个机构部门信息
     * @param id 主键
     * @return
     */
    @Select("select * from Organization where id = #{id,jdbcType=VARCHAR}")
    Organization getOrganizationById(String id);

    /**
     * 根据id获取一个机构部门信息(非删除状态的)
     * @param id 主键
     * @return
     */
    @Select("select * from Organization where id = #{id,jdbcType=VARCHAR} and status != '2'")
    Organization getOrganizationNodelById(String id);

    /**
     * 根据ID查询机构部门信息并将一些id数据转换为中文
     * @param id 主键
     * @return
     */
    Organization getOrganizationByIdtransformZh(String id);

    /**
     * 根据管辖机构ID 查询 全部属于该管辖机构ID的 机构|部门
     * @param fatherorgNode 管辖机构ID
     * @return 全部属于该管辖机构ID的 机构|部门
     */
    @Select("select * from Organization where fatherorgNode = #{fatherorgNode,jdbcType=VARCHAR} and status != '2'")
    List<Organization> findOrganizationByFatherorgNode(String fatherorgNode);

    /**
     * 根据主键删除机构
     * @param id 机构id
     */
    @Delete("delete from Organization where id=#{id,jdbcType=VARCHAR}")
    void delOrganization(String id);

}
